/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package INTERFAZ;

import CONTROLES.ControlPlanInversion;
import CONTROLES.ControlSucursal;
import MODELOS.PlanInversion;
import UTILITARIOS.Herramienta;
import UTILITARIOS.UTextField;
import java.awt.Choice;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.border.TitledBorder;





/**
 *
 * @author Administrador
 */
public class FormPlanInversion extends JDialog implements Propiedades{

    private JPanel titulo;
    private JPanel formulario;
    private JPanel botones;

    private JLabel lblNombrePlan;
    private UTextField txtNombrePlan;

    private JLabel lblIdSucursal;
    private Choice choiseIdSucursal;
    private JLabel lblDescripcion;
    private UTextField txtDescripcion;
    private JLabel lblFrecuencia;
    private UTextField txtFrecuencia;
    private JLabel lblDuracion;
    private UTextField txtDuracion;
    private JLabel lblPorcentaje;
    private UTextField txtPorcentaje;
    private JButton editarPorcentaje;
    private JLabel lblPorcentaje1;
    private UTextField txtPorcentaje1;
    
    private JLabel jlb1;
    private JLabel jlb2;
    private JLabel jlb3;
    private JLabel jlb4;
    private JLabel jlb5;

    private JLabel nota;
    private JTextArea descripcionNota;

    private JButton btnAceptar;
    private JButton btnCancelar;

    ControlSucursal cSucursal;

    public FormPlanInversion(javax.swing.JFrame parent)
    {
        super(parent);
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();

    }

    public void setProperties() {
        setLayout(null);
		setSize(560, 358);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                setTitle("Registro de Nuevo Plan de Inversion");
		getContentPane().setBackground(Color.BLACK);
		setResizable(false);
    }

    public void buildComponents() {

        cSucursal = new ControlSucursal();
        String lista[] = cSucursal.nombresSuc();

        lblIdSucursal = new JLabel("Sucursal(*) : ", JLabel.RIGHT );
        choiseIdSucursal = new Choice();
        for(int i = 0; i<lista.length; i++)
           choiseIdSucursal.add(lista[i]);

        setChoiseIdSucursal(Bienvenida.sucursal.getIdSucursal()+"-"+Bienvenida.sucursal.getNombreSuc());

        lblNombrePlan = new JLabel("Nombre del Plan(*) : ", JLabel.RIGHT );
        txtNombrePlan = new UTextField();

        lblDescripcion = new JLabel("Descripcion del plan : ", JLabel.RIGHT );
        txtDescripcion = new UTextField(UTextField.ONLY_CARACTERS_VALUE);

        jlb1 = new JLabel("Meses");
        lblDuracion = new JLabel("Duracion (*) : ", JLabel.RIGHT );
        txtDuracion = new UTextField(UTextField.INT_VALUE);        

        jlb2 = new JLabel("Meses");
        lblFrecuencia = new JLabel("Frecuencia Pago (*) Cada : ", JLabel.RIGHT );
        txtFrecuencia = new UTextField(UTextField.INT_VALUE);
        
        lblPorcentaje = new JLabel("Interes (*): ", JLabel.RIGHT );
        jlb3 = new JLabel("%");
        txtPorcentaje = new UTextField(UTextField.DOUBLE_VALUE);        

        lblPorcentaje1 = new JLabel("Interes Real(*): ", JLabel.RIGHT );
        jlb4 = new JLabel("%");
        txtPorcentaje1 = new UTextField(UTextField.DOUBLE_VALUE);
        editarPorcentaje = new JButton("EDITAR");

        jlb5 = new JLabel("");
        nota = new JLabel(" Nota : ");
        nota.setForeground(Color.red);
//        nota.setFont(new Font("Thaoma", Font.PLAIN, 15));
        descripcionNota = new JTextArea("La DURACION del Plan de inversion debe ser divisible por \n la FRECUENCIA DE PAGO");
        descripcionNota.setEditable(false);
        titulo = new JPanel();
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("GUARDAR");
        btnCancelar = new JButton("CANCELAR");
    }

    public void setPropertiesComponents() {
        titulo.setLayout(new BorderLayout(1,1));
        titulo.setSize(new Dimension(555,330));
        titulo.setBorder(BorderFactory.createTitledBorder(null,"DATOS DEL PLAN DE INVERSION",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        formulario.setLayout(new FlowLayout());
        formulario.setSize(new Dimension(500,260));
        botones.setSize(250, 100);
        
        formulario.setBorder(Herramienta.createTitleBorder(""));
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(165,20);
	Dimension dimText = new Dimension(290,20);
        Dimension dimText1 = new Dimension(100,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,11);

        lblIdSucursal.setPreferredSize( dimLabel );
        lblIdSucursal.setFont(fontLabel);
        lblIdSucursal.setForeground(Color.BLACK);
        choiseIdSucursal.setPreferredSize( dimText );

        lblNombrePlan.setPreferredSize( dimLabel );
        lblNombrePlan.setFont(fontLabel);
        lblNombrePlan.setForeground(Color.BLACK);
        txtNombrePlan.setPreferredSize( dimText );

        lblDescripcion.setPreferredSize(dimLabel);
        lblDescripcion.setFont(fontLabel);
        lblDescripcion.setForeground(Color.BLACK);
        txtDescripcion.setPreferredSize(dimText);

        lblDuracion.setPreferredSize(dimLabel);
        lblDuracion.setFont(fontLabel);
        lblDuracion.setForeground(Color.BLACK);
        txtDuracion.setPreferredSize(dimText1);
        jlb1.setPreferredSize(new Dimension(188,20));

        lblFrecuencia.setPreferredSize(dimLabel);
        lblFrecuencia.setFont(fontLabel);
        lblFrecuencia.setForeground(Color.BLACK);
        txtFrecuencia.setPreferredSize(dimText1);
        jlb2.setPreferredSize(new Dimension(188,20));

        Dimension dim2 = new Dimension(80,20);
        lblPorcentaje.setPreferredSize(dimLabel);
        lblPorcentaje.setFont(fontLabel);
        lblPorcentaje.setForeground(Color.BLACK);
        txtPorcentaje.setPreferredSize(new Dimension(40,20));
        jlb3.setPreferredSize(new Dimension(10,20));
        editarPorcentaje.setPreferredSize(dim2);
        txtPorcentaje.setText("3.00");
        txtPorcentaje.setEditable(false);

        lblPorcentaje1.setPreferredSize(dim2);
        lblPorcentaje1.setFont(fontLabel);
        lblPorcentaje1.setForeground(Color.BLACK);
        txtPorcentaje1.setPreferredSize(new Dimension(40,20));        
        jlb4.setPreferredSize(new Dimension(10,20));
        
        jlb5.setPreferredSize(new Dimension(560,20));
        nota.setPreferredSize(dim2);
        descripcionNota.setPreferredSize(new Dimension(390,50));

        //botones.setPreferredSize( new Dimension(250,25) );
        btnAceptar.setPreferredSize(new Dimension(110,20));
        btnCancelar.setPreferredSize(new Dimension(110,20));

        botones.setOpaque(false);

        btnAceptar.setToolTipText("Registar el Plan de inversion");
        btnAceptar.setForeground(Color.BLACK);
        btnCancelar.setToolTipText("Cancelar la operación");
        btnCancelar.setForeground(Color.BLACK);

            btnAceptar.setMnemonic('a');
            btnCancelar.setMnemonic('c');
    }

    public void addComponents() {

        formulario.add(lblIdSucursal);
        formulario.add(choiseIdSucursal);

        formulario.add(lblNombrePlan);
        formulario.add(txtNombrePlan);

        formulario.add(lblDescripcion);
        formulario.add(txtDescripcion);

        formulario.add(lblDuracion);
        formulario.add(txtDuracion);
        formulario.add(jlb1);

        formulario.add(lblFrecuencia);
        formulario.add(txtFrecuencia);
        formulario.add(jlb2);

        formulario.add(lblPorcentaje);
        formulario.add(txtPorcentaje);
        formulario.add(jlb3);
        formulario.add(editarPorcentaje);

        formulario.add(lblPorcentaje1);
        formulario.add(txtPorcentaje1);
        formulario.add(jlb4);

        formulario.add(jlb5);
        formulario.add(nota);
        formulario.add(descripcionNota);

        botones.add(btnAceptar);
        botones.add(btnCancelar);
        
        add(titulo);
        titulo.add( "Center",formulario);
        titulo.add("South",botones);
        
    }

    public int guardar(){
        ControlPlanInversion control_plan = new ControlPlanInversion();
        PlanInversion plan = new PlanInversion();

        String idSuc = getChoiseIdSucursal();
        StringTokenizer i = new StringTokenizer(idSuc,"-");
        int idSucursal = Integer.parseInt(i.nextToken());

        int frecuencia = Integer.parseInt(getTxtFrecuencia());
        int duracion = Integer.parseInt(getTxtDuracion());
        double porcentaje = Double.parseDouble(getTxtPorcentaje());
        double codigo_control = Double.parseDouble(getTxtCodigoControl());

        if(duracion < 1 || frecuencia <= 0 || getTxtNombrePlan().equals("") || porcentaje <= 0 || codigo_control <= 0 ){
           return 2;//retorna error
        }else if((duracion%frecuencia)!= 0){
            return 3; //retorna error
        }else if(porcentaje > 3 ){
            return 4; //retorna error
        }else if(duracion < frecuencia){
            return 5;
        }else
        {
            plan.setIdSucursal(idSucursal);
            plan.setDescripcionPlan(getTxtDescripcion());
            plan.setNombrePlan(getTxtNombrePlan());
            plan.setDuracion(duracion);
            plan.setPorcentaje(porcentaje);
            plan.setCodigoPlan(codigo_control);
            plan.setFrecuenciaPago(frecuencia);
            if(control_plan.registrarPlanInversion(plan)== true )//registrar el plan el la base de datos
                return 0;
            else
                return 1;
        }
    }
    public void addEvents() {

        editarPorcentaje.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {                
                txtPorcentaje.setEditable(true);
            }
        });
        btnAceptar.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                int t = guardar();
                System.out.println("valor de t ="+t);
                if( t == 0){
                    JOptionPane.showMessageDialog(null, "El Plan de Inversion ha sido Registrado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                    dispose();
                }else if(t == 1){
                    JOptionPane.showMessageDialog(null, "Se produjo un error al tratar de registrar el Plan de Inversion", "Confirmación", JOptionPane.YES_OPTION);
                    dispose();
                } else if(t== 3){
                    JOptionPane.showMessageDialog(null, "Verifique que la duracion del plan de inversion\n debe ser divisible por la frecuencia de pago", "Confirmación", JOptionPane.YES_OPTION);
                }else if(t==4){
                    JOptionPane.showMessageDialog(null, "El interes Ficticio no puede se mayor al 3%", "Confirmación", JOptionPane.YES_OPTION);
                }else if(t==5){
                    JOptionPane.showMessageDialog(null, "La FRECUENCIA DE PAGO No puede se mayor a la DURACION del plan", "Confirmación", JOptionPane.YES_OPTION);
                }else
                    JOptionPane.showMessageDialog(null, "El formulario NO a sido llenado Correctamente Verifique e intente nuevamente", "Confirmación", JOptionPane.YES_OPTION);
            }

       });
                 btnCancelar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				//JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema ", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                            dispose();
			}
		});

               addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				//JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                        }
		});
    }

    
    public String getTxtNombrePlan() {
        return txtNombrePlan.getText();
    }

    public void setTxtNombrePlan(String txtNombrePlan) {
        this.txtNombrePlan.setText(txtNombrePlan);
    }
 
    public String getTxtDescripcion() {
        return txtDescripcion.getText();
    }

    public void setTxtDescripcion(String txtDescripcion) {
        this.txtDescripcion.setText(txtDescripcion);
    }

    public String getTxtDuracion() {
        return txtDuracion.getText();
    }

    public void setTxtDuracion(String txtDuracion) {
        this.txtDuracion.setText(txtDuracion);
    }

    public String getTxtFrecuencia() {
        return txtFrecuencia.getText();
    }

    public void setTxtFrecuencia(String txtFrecuencia) {
        this.txtFrecuencia.setText(txtFrecuencia);
    }

    public String getTxtPorcentaje() {
        return txtPorcentaje.getText();
    }

    public void setTxtPorcentaje(String txtPorcentaje) {
        this.txtPorcentaje.setText(txtPorcentaje);
    }

    private String getTxtCodigoControl() {
        return txtPorcentaje1.getText();
    }

    public void setTxtCodigoControl(String txtCodigo) {
        this.txtPorcentaje1.setText(txtCodigo);
    }

    public String getChoiseIdSucursal() {
        return choiseIdSucursal.getSelectedItem();
    }

    public void setChoiseIdSucursal(String choiseIdSucursal) {
        this.choiseIdSucursal.select(choiseIdSucursal);
    }
    public static void main(String args[])
    {
        FormPlanInversion n = new FormPlanInversion( new javax.swing.JFrame());
        n.setVisible(true);

    }
}